In software development or domain engineering, a domain-specific language is a programming language or a specification language dedicated to a particular problem domain, a particular problem representation technique, and/or a particular solution technique. A domain-specific language is created to solve problems in a particular domain and might not be intended to solve problems outside it.
Many applications provide domain-specific-query-languages (“DSQL”) to allow users to express custom and often data-intensive business logic. Various traditional relational databases provide a limited set of options for executing business logic within a database. Some of these include various procedures and/or a series of complex queries coupled together with code. However, these methodologies are generally either part of the application implementation and therefore unchangeable by the user to implement custom functions or require the user to deal with general stored procedure languages and database internals to develop custom business logic. Additional problems can arise if all business logic is expressed on application side. As a result, large amounts of data are transferred between an application and a database, which can be time consuming and can prevent users from experiencing a full potential of a dataset.
Relational databases can be reliable and scalable as well as can be based on SQL in order to provide a standardized and powerful query language. However, some recent trends in the technology of relational database have been trying to differentiate themselves from classic relational database management systems. One of these trends includes NoSQL database management systems which might not require fixed table schemas, usually avoid join operations and typically scale horizontally. While the classic relational database model systems works well for most enterprise applications, there exist applications where specific query languages can be provided to the user for easy interaction with the data stored in a database. Thus, to keep a user within confined boundaries of an application domain, no SQL may be needed. The DSQL systems allow users to develop data-intensive processing logic in a domain specific non-SQL language that still benefits from execution within a database, thereby allowing access to the database.